System and Method For Delivering Content Over a Multicast Network

ABSTRACT

A system for delivering content over a network includes a server. The server is configured to divide the content into multiple segments, to create multiple data streams using the segments of the content, and to transmit each of the data streams via a respective multicast session, wherein a copy of each of the multiple segments is transmitted during a single time slot of the multicast session.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.14/092,349 filed on Nov. 27, 2013, which is a continuation of U.S.patent application Ser. No. 13/104,701 filed on May 10, 2011, now U.S.Pat. No. 8,601,334, both of which are herein incorporated by referencein their entireties.

FIELD OF THE DISCLOSURE

The present disclosure generally relates to communications networks, andmore particularly relates to content delivery networks.

BACKGROUND

Packet-switched networks, such as networks based on the TCP/IP protocolsuite, can distribute a rich array of digital content to a variety ofclient applications. One popular application is a personal computerbrowser for retrieving documents over the Internet written in theHypertext Markup Language (HTML). Frequently, these documents includeembedded content. Where once the digital content consisted primarily oftext and static images, digital content has grown to include audio andvideo content as well as dynamic content customized for an individualuser.

It is often advantageous when distributing digital content across apacket-switched network to divide the duty of answering content requestsamong a plurality of geographically dispersed servers. For example,popular Web sites on the Internet often provide links to “mirror” sitesthat replicate original content at a number of geographically dispersedlocations. A more recent alternative to mirroring is contentdistribution networks (CDNs) that dynamically redirect content requeststo a cache server situated closer to the client issuing the request.CDNs either co-locate cache servers within Internet Service Providers ordeploy them within their own separate networks.

BRIEF DESCRIPTION OF THE DRAWINGS

It will be appreciated that for simplicity and clarity of illustration,elements illustrated in the Figures have not necessarily been drawn toscale. For example, the dimensions of some of the elements areexaggerated relative to other elements. Embodiments incorporatingteachings of the present disclosure are shown and described with respectto the drawings presented herein, in which:

FIG. 1 is a diagram illustrating a geographically dispersed network inaccordance with one embodiment of the present disclosure;

FIG. 2 is a block diagram illustrating a system for delivering contentin accordance with one embodiment of the present disclosure;

FIG. 3 is a block diagram illustrating the system for delivering contentin accordance with another embodiment of the present disclosure;

FIG. 4 is a flow diagram illustrating a method for delivering multicastcontent; and

FIG. 5 is an illustrative embodiment of a general computer system.

The use of the same reference symbols in different drawings indicatessimilar or identical items.

DETAILED DESCRIPTION OF THE DRAWINGS

The numerous innovative teachings of the present application will bedescribed with particular reference to the presently preferred exemplaryembodiments. However, it should be understood that this class ofembodiments provides only a few examples of the many advantageous usesof the innovative teachings herein. In general, statements made in thespecification of the present application do not necessarily limit any ofthe various claimed inventions. Moreover, some statements may apply tosome inventive features but not to others.

FIG. 1 shows a multicast tree 100 for distributing digital contentthrough a geographically dispersed network, such as the Internet.Multicast tree 100 can include a server 102 and client devices 104, 106,108, 110, 112, 114, 116, and 118. Server 102 and client devices 104,106, 108, 110, 112, 114, 116, and 118 can communicate through a networkof distribution points 120, 124, 126, 128, and 130. The distributionpoints 120, 124, 126, 128, and 130 may be routers. Alternatively, thedistribution points 120, 124, 126, 128, and 130 may be nodes of anoverlay network. For example, communications from server 102 can travelthrough distribution points 120, 124, and 126 to client device 108 whilecommunications from server 102 can travel through distribution points120 and 130 to client 116. It will be appreciated that multicast tree100 may be a logical overlay of a mesh network that, for example, mayhave a direct connection from distribution point 130 to 128, and also,for example, may have a direct connection from distribution point 126 to130. These distribution points may be multicast-enabled routers. Thedistribution points may have the ability to cache content not only forimmediate forwarding but also for later retransmission.

Server 102 can use Internet Protocol (IP) multicast or any othermulticast protocol to substantially simultaneously distribute digitalcontent to the client devices 104, 106, 108, 110, 112, 114, 116, and118. The digital content can be divided into multiple segments or datapackets that may be, but are not necessarily IP packets, Ethernetframes, or similar lower layer packets. Using a multicast protocol, eachsuch segment or data packet can move over each link of the network onlyonce. The distribution points 120, 124, 126, 128, and 130 can createcopies, or otherwise forward incoming data on one port to multipleoutbound ports, when the paths to the destinations split. For example,server 102 can send a multicast data packet to distribution point 120.Distribution point 120 can send a copy of the data packet to each ofclient 104, distribution point 124, and distribution point 130.Similarly, distribution point 130 can send, forward, or route a copy ofthe segment, data packet, or individual low layer packets to each ofclient devices 116 and 118, and distribution point 124 can send a copyof the data packet to each of distribution points 126 and 128. Further,distribution point 126 can send a copy of the data packet to each ofclient devices 106 and 108, and distribution point 128 can send a copyof the data packet to each of client devices 110, 112, and 114. In otherembodiments, the network underlying multicast tree 100 may be a sharedmedium, such as a bus or ring, with multicast occurring at a low networklayer via common physical components and a common media accessstructure.

Generally, the distribution points construct or join the multicast tree100 when client devices join a multicast group, and the server 102 maynot have information about each member of the multicast group.Specifically, client devices can notify the network that they areinterested in receiving data packets sent to the multicast group, suchas by Internet Group Management Protocol. The server 102 can send amessage addressed to the multicast group and each distribution point canreplicate the data packet for each system of the multicast group.

FIG. 2 illustrates an exemplary system 200 for delivery of content. Thesystem 200 includes the server 102, which can deliver the content to theclient devices 106, 108, 110 and 112 via a network 202. The content canbe a large data file, such as a software update or the like. The contentcan be divided into multiple segments, as illustrated by blocks 1, 2, 3,and 4, and each of the data segments can be replicated and placed inmultiple data streams 204, 206, 208, and 210. Each of the data streams204, 206, 208, and 210 can include all of the segments of the content,and can continually repeat the segments in the data stream. However, asegment in one data stream can be staggered in time from a copy of thatsegment in another data stream, such that server 102 can transmit everysegment of the content during a single time slot.

For example, when server 102 transmits data stream 204 to the network202, segment 1 of the content can be sent during a first time slot 220,segment 2 can be sent during a second time slot 222, segment 3 can besent during a third time slot 224, and segment 4 can be sent during afourth time slot 226. After segment 4 has been transmitted in datastream 204, server 102 can repeat the segments in the data stream in thesame order described above, such as segment 1, then segment 2, thensegment 3, and then segment 4.

When server 102 transmits data stream 206 to the network 202, segment 2can be sent during the first time slot 220, segment 3 can be sent duringthe second time slot 222, segment 4 can be sent during the third timeslot 224, and segment 1 can be sent during the fourth time slot 226.After segment 1 has been transmitted in data stream 206, server 102 canrepeat the segments in the same order as described above, such assegment 2, then segment 3, then segment 4, and then segment 1.

When server 102 transmits data stream 208 to the network 202, segment 3can be sent during the first time slot 220, segment 4 can be sent duringthe second time slot 222, segment 1 can be sent during the third timeslot 224, and segment 2 can be sent during the fourth time slot 226.After segment 2 has been transmitted in data stream 208, server 102 canrepeat the segments in the same order as described above, such assegment 3, then segment 4, then segment 1, and then segment 2.

When server 102 transmits data stream 210 to the network 202, segment 4can be sent during the first time slot 220, segment 1 can be sent duringthe second time slot 222, segment 2 can be sent during the third timeslot 224, and segment 3 can be sent during the fourth time slot 226.After segment 3 has been transmitted in data stream 210, server 102 canrepeat the segments in the same order as described above, such assegment 4, then segment 1, then segment 2, and then segment 3.

Each segment of the content can be self contained data, such that errordetection can be performed on a segment by segment basis. If one of thesegments is received with an error, then only that segment may need tobe downloaded again. The segments can include metadata to identify thesegment, to provide the client devices with the sequence of the segmentsin each of the data streams, and to provide information for errordetection. For example, each segment can include a codeword that has acheck value associated with the data in the segment. When the clientdevice 106, 108, 110, or 112 receives the segment, the client device canperform a cyclic redundancy check (CRC) for the segment to check forerrors. The client device 106, 108, 110, or 112 can perform the errorcheck by removing the codeword and check value from the metadata, andcomparing the check value in the codeword to a check value calculated bythe client device based on the data in the segment as received from thenetwork 202. If the check values do not match, then the segment may bedetermined to contain one or more bit errors and the client device 106,108, 110, or 112 may then attempt to re-receive that segment from theserver 102. However, if the check values do match, the client device canassume that the segment is error-free and can store the segment in amemory of the client device for later use.

The server 102 can deliver data streams 204, 206, 208, and 210 tonetwork 202 in multicast sessions 212, 214, 216, and 218. In anembodiment, multicast session 212 can deliver data stream 204, multicastsession 214 can deliver data stream 206, multicast session 216 candeliver data stream 208, and multicast session 218 can deliver datastream 210.

Client devices 106, 108, 110, and 112 can each receive one or more ofthe multicast streams to obtain the content. The number of multicastsessions received by each of client devices 106, 108, 110, and 112 candepend on the available bandwidth for the client device, which candynamically change based on fluctuations in the network 202 while theclient device is downloading the content. The fluctuations in thenetwork 202 can be based on the number of client devices accessing thenetwork during a particular time period, or other network constraints.Each of the data streams 204, 206, 208, and 210 can be transferred tothe network at the same speed or at different speeds. For example, eachof the data streams 204, 206, 208, and 210 can be sent at a transferrate of 100 Kilobytes per second (Kbps).

Client device 106 may be restricted in available bandwidth, such thatthe client device does not have enough bandwidth to receive all of thedata streams 204, 206, 208, and 210 from the network 202 at the sametime. That is, client device 106 may be located in a region where a lotof additional client devices are accessing network 202 so that theavailable bandwidth for the client device is limited to about 100 Kbps.Thus, the client device 106 may only receive one multicast session at atime. As such, client device 106 can connect to any one of the multicastsessions 212, 214, 216, and 218, and can receive all of the contentwithin four time slots. For example, if client device 106 receivesmulticast session 212, the client device 106 can receive segment 1 ofthe content during the first time slot 220, segment 2 during the secondtime slot 222, segment 3 during the third time slot 224, and segment 4during the fourth time slot 226.

When the client device 106 has received all of the segments, the clientdevice can perform error detection on the segments. If the client device106 detects an error in one of the segments, the client device can usethe metadata in the segments to determine which of the multicastsessions can deliver the segment during the next time slot. The clientdevice 106 can then join that multicast session.

Client device 108 may have about twice the available bandwidth as clientdevice 106. For example, client device 108 can have an availablebandwidth of 200 Kbps, such that the client device can receive twomulticast sessions at a time. As such, client device 108 can connect toany two of the multicast sessions 212, 214, 216, and 218 atsubstantially the same time, and can receive all of the content from thenetwork 202 within two time slots. The client device 108 can use themetadata in the segments to determine which two multicast sessions canprovide the client device with each of the segments in a shortest numberof time slots, such as multicast sessions 212 and 216. For example,client device 108 can receive both segment 1 via data stream 204 in themulticast session 212 and segment 3 via data stream 208 in the multicastsession 216 during the first time slot 220. The client device 108 canthen receive both segment 2 via data stream 204 in the multicast session212 and segment 4 via data stream 208 in the multicast session 216during the second time slot 222.

When the client device 108 has received all of the segments, the clientdevice can perform error detection on the segments. If the client device108 detects an error in one of the segments, the client device can usethe metadata in the segments to determine which of the multicastsessions can deliver the segment during the next time slot. The clientdevice 108 can then receive that multicast session.

Client device 110 may have access to more available bandwidth than bothclient devices 106 and 108. For example, client device 110 can have anavailable bandwidth of 300 Kbps, and can receive three multicastsessions at a time. As such, client device 110 can connect to any threeof the multicast sessions 212, 214, 216, and 218 at substantially thesame time, and can receive all of the content from the network 202within two time slots. The client device 110 can use the metadata in thesegments to determine which multicast sessions can provide the clientdevice with each of the segments in the shortest number of time slots,such as multicast sessions 212, 214, and 216.

For example, during the first time slot 220 client device 110 canreceive segment 1 via data stream 204 in the multicast session 212,segment 2 via data stream 206 in multicast session 214, and segment 3via data stream 208 in the multicast session 216. Client device 110 canthen receive segment 4 via data stream 210 in the multicast session 216during the second time slot 222.

However, if an error is detected in one of the segments received duringthe first time slot 220, such as segment 2, the client device 110 canutilize the metadata to determine which multicast session can providethe segment during the second time slot 222. That is, the client device110 can determine that multicast session 212 can provide segment 2during the second time slot 222, and can then receive segment 2 via datastream 204 in the multicast session 212 during the second time slot.

Client device 112 may have enough available bandwidth, such as 400 Kbps,to enable the client device to receive all four multicast sessions atone time. As such, client device 112 can connect to all of the multicastsessions 212, 214, 216, and 218 and receive all of the content withinone time slot. For example, during the first time slot 220 client device112 can receive segment 1 via data stream 204 in the multicast session212, segment 2 via data stream 206 in multicast session 214, segment 3via data stream 208 in the multicast session 216, and segment 4 via datastream 210 in the multicast session 218. If client device 112 detectsany errors, the client device can use the metadata in the segments todetermine which of the multicast sessions 212, 214, 216, and 218 canprovide the segment or segments during the next time slot, such as thesecond time slot 222.

FIG. 3 illustrates another embodiment of the exemplary system 200 fordelivering the content. The system 200 can include the server 102, whichcan deliver the content to the client devices 106, 108, 110 and 112 vianetwork 202. The server 102 can divide the content into the multiplesegments, as illustrated by blocks 1, 2, 3, and 4, and can replicateeach data segment. The server 102 can then place all of the replicatedcopies of one segment in an individual data stream 304, 306, 308, or310.

For example, data stream 304 can include only segment 1, such thatsegment 1 is transmitted in data stream 304 during each of the timeslots 220, 222, 224, and 226. Similarly, data stream 306 can includeonly segment 2, such that segment 2 is transmitted in data stream 306during each of the time slots 220, 222, 224, and 226. Data stream 308can include only segment 3, such that segment 3 is transmitted duringeach of the time slots 220, 222, 224, and 226. Data stream 310 caninclude only segment 4, such that segment 4 is transmitted in datastream 310 during each of the time slots 220, 222, 224, and 226.

If client device 106 is restricted in available bandwidth to about 100Kbps, the client device may only receive one multicast session at atime. As such, client device 106 can switch between the multicastsessions 212, 214, 216, and 218 from one time slot to the next, and canreceive all of the content within four time slots. For example, clientdevice 106 can initially receive segment 1 of the content via datastream 304 in the multicast session 212 during the first time slot 220.Then, during the second time slot 222, the client device 106 can receivesegment 2 of the content by receiving data stream 306 in the multicastsession 214. During the third time slot 224, the client device canreceive segment 3 of the content from data stream 308 in the multicastsession 216. The client device can then receive segment 4 of the contentvia data stream 310 in the multicast session 218 during the fourth timeslot 226. If the client device 106 detects that one or more of thereceived segments have errors, the client device can use the metadata ofthe segments to determine which multicast session provides that segmentso that the client device can re-retrieve that segment during the nexttime slot.

Client device 108 may have an available bandwidth of 200 Kbps. As such,client device 108 can connect to any two of the multicast sessions 212,214, 216, and 218 at substantially the same time to receive all of thecontent from the network 202 within two time slots. The client device108 can use the metadata in the segments to determine which multicastsessions to receive based on any segments that the client device mayalready have received, so that the client device can receive all of thesegments in the shortest number of time slots. For example, if clientdevice 108 received segment 1 via data stream 304 in the multicastsession 212 and segment 2 via data stream 306 in the multicast session214 during the first time slot 220, then the client device can use themetadata to determine that multicast sessions 216 and 218 can providesegments 3 and 4. The client device 108 can then receive segment 3 viadata stream 308 in the multicast session 216 and segment 4 via datastream 310 in the multicast session 218 during the second time slot 222.

Client device 110 may have access to about 300 Kbps of availablebandwidth, such that the client device can receive three multicastsessions at a time. As such, client device 106 can connect to any threeof the multicast sessions 212, 214, 216, and 218 at substantially thesame time to receive all of the content from the network 202 within twotime slots. For example, during the first time slot 220 client device110 can receive segment 1 via data stream 304 in the multicast session212, segment 2 via data stream 306 in multicast session 214, and segment3 via data stream 308 in the multicast session 216. Client device 110can then receive segment 4 via data stream 310 in the multicast session218 during the second time slot 222.

Client device 112 may have enough available bandwidth, such as 400 Kbps,to enable the client device to receive all four multicast sessions at atime. As such, client device 106 can connect to all of the multicastsessions 212, 214, 216, and 218 and receive all of the content withinone time slot. For example, client device 106 can receive segment 1 viadata stream 304 in the multicast session 212, segment 2 via data stream306 in multicast session 214, segment 3 via data stream 308 in themulticast session 216, and segment 4 via data stream 310 in themulticast session 218 during the first time slot 220.

FIG. 4 shows a flow diagram of a method 400 for delivering multicastcontent. At block 402, content to transmit via a multicast session isdetermined The content is divided into multiple segments at block 404.At block 406, multiple data streams are created using multiple copies ofthe segments of the content. In one embodiment, a data stream cancontinually repeat only copies of a single segment of the content. Inanother embodiment, each data stream can continually repeat copies ofeach of the segments. When each data stream includes copies of each ofthe segments, a segment in one data stream can be staggered in time ascompared to another data stream so that all of the data streams can betransmitted within a single time slot. Each of the data streams aretransmitting via a different multicast session at block 408.

At block 410, an available bandwidth for a client device is determined.The client device is connected to a number of the multicast sessionsbased on the available bandwidth at block 412. For example, the morebandwidth available to the client device, the more multicast sessionsthe client device can connect to. At block 414, the segments arereceived by the client device via the data streams in the multicastsessions. An error is detected in one of the segments at block 416. Theerror can be detected using CRC or the like. At block 418, one of themulticast sessions is connected to based on metadata in the segments toreceive a new copy of the segment that had the error. The segments arecompiled together to recover the content at block 420.

FIG. 5 shows an illustrative embodiment of a general computer system500. The computer system 500 can include a set of instructions that canbe executed to cause the computer system to perform any one or more ofthe methods or computer based functions disclosed herein. The computersystem 500 may operate as a standalone device or may be connected, suchas by using a network, to other computer systems or peripheral devices.

In a networked deployment, the computer system may operate in thecapacity of a server or as a client user computer in a server-clientuser network environment, or as a peer computer system in a peer-to-peer(or distributed) network environment. The computer system 500 can alsobe implemented as or incorporated into various devices, such as apersonal computer (PC), a tablet PC, a set top box (STB), a personaldigital assistant (PDA), a mobile device, a palmtop computer, a laptopcomputer, a desktop computer, a communications device, a wirelesstelephone, a land-line telephone, a control system, a camera, a scanner,a facsimile machine, a printer, a pager, a personal trusted device, aweb appliance, a network router, switch or bridge, or any other machinecapable of executing a set of instructions (sequential or otherwise)that specify actions to be taken by that machine. In a particularembodiment, the computer system 500 can be implemented using electronicdevices that provide voice, video or data communication. Further, whilea single computer system 500 is illustrated, the term “system” shallalso be taken to include any collection of systems or sub-systems thatindividually or jointly execute a set, or multiple sets, of instructionsto perform one or more computer functions.

The computer system 500 may include a processor 502, such as a centralprocessing unit (CPU), a graphics processing unit (GPU), or both.Moreover, the computer system 500 can include a main memory 504 and astatic memory 506 that can communicate with each other via a bus 508. Asshown, the computer system 500 may further include a video display unit510 such as a liquid crystal display (LCD), an organic light emittingdiode (OLED), a flat panel display, a solid state display, or a cathoderay tube (CRT). Additionally, the computer system 500 may include aninput device 512 such as a keyboard, and a cursor control device 514such as a mouse. The computer system 500 can also include a disk driveunit 516, a signal generation device 518 such as a speaker or remotecontrol, and a network interface device 520 to communicate with anetwork 526. In a particular embodiment, the disk drive unit 516 mayinclude a computer-readable medium 522 in which one or more sets ofinstructions 524, such as software, can be embedded. Thecomputer-readable medium can be a non-transitory computer readablemedium, such as a hard disk drive, a flash memory, a read-only memory, acompact disk, a digital versatile disk, a cache, a random-access memory,and the like. Further, the instructions 524 may embody one or more ofthe methods or logic as described herein. In a particular embodiment,the instructions 524 may reside completely, or at least partially,within the main memory 504, the static memory 506, and/or within theprocessor 502 during execution by the computer system 500. The mainmemory 504 and the processor 502 also may include computer-readablemedia.

The illustrations of the embodiments described herein are intended toprovide a general understanding of the structure of the variousembodiments. The illustrations are not intended to serve as a completedescription of all of the elements and features of apparatus and systemsthat utilize the structures or methods described herein. Many otherembodiments may be apparent to those of skill in the art upon reviewingthe disclosure. Other embodiments may be utilized and derived from thedisclosure, such that structural and logical substitutions and changesmay be made without departing from the scope of the disclosure.Additionally, the illustrations are merely representational and may notbe drawn to scale. Certain proportions within the illustrations may beexaggerated, while other proportions may be minimized Accordingly, thedisclosure and the FIGs. are to be regarded as illustrative rather thanrestrictive.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b) and is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description of the Drawings, variousfeatures may be grouped together or described in a single embodiment forthe purpose of streamlining the disclosure. This disclosure is not to beinterpreted as reflecting an intention that the claimed embodimentsrequire more features than are expressly recited in each claim. Rather,as the following claims reflect, inventive subject matter may bedirected to less than all of the features of any of the disclosedembodiments. Thus, the following claims are incorporated into theDetailed Description of the Drawings, with each claim standing on itsown as defining separately claimed subject matter.

The above disclosed subject matter is to be considered illustrative, andnot restrictive, and the appended claims are intended to cover all suchmodifications, enhancements, and other embodiments which fall within thetrue spirit and scope of the present disclosed subject matter. Thus, tothe maximum extent allowed by law, the scope of the present disclosedsubject matter is to be determined by the broadest permissibleinterpretation of the following claims and their equivalents, and shallnot be restricted or limited by the foregoing detailed description.

What is claimed is:
 1. A system, comprising: a memory that stores instructions; a processor that executes the instructions to perform operations, the operations comprising: dividing content into multiple segments that correspond to multiple data streams, wherein each segment of the multiple segments is a separate portion of the content with respect to other segments of the multiple segments; transmitting, to a client, each of the multiple data streams via a separate multicast session of a plurality of multicast sessions, wherein first copies of each of the segments of the multiple segments in a first data stream of the multiple data streams are staggered in time from second copies of each of the segments of the multiple segments in a second data stream of the multiple data streams so that each of the multiple segments of the content are transmitted to the client during a period of time.
 2. The system of claim 1, wherein the operations further comprise determining the content to be transmitted via the separate multicast session of the plurality of multicast sessions.
 3. The system of claim 1, wherein the operations further comprise creating the multiple data streams
 4. The system of claim 1, wherein the operations further comprise determining an available bandwidth for the client.
 5. The system of claim 4, wherein the operations further comprise connecting the client to a subset of the plurality of multicast sessions based on the available bandwidth.
 6. The system of claim 1, wherein the operations further comprise detecting an error in a segment of the multiple segments.
 7. The system of claim 6, wherein the operations further comprise providing, to the client, a new copy of the segment in which the error was detected.
 8. The system of claim 1, wherein the operations further comprise assigning each of the multiple data streams to the separate multicast session of the plurality of multicast sessions.
 9. The system of claim 1, wherein the operations further comprise transmitting, to the client, each of the multiple data streams during a single time slot.
 10. A method, comprising: dividing, by utilizing instructions from memory that are executed by a processor, content into multiple segments that correspond to multiple data streams, wherein each segment of the multiple segments is a separate portion of the content with respect to other segments of the multiple segments; transmitting, to a client, each of the multiple data streams via a separate multicast session of a plurality of multicast sessions, wherein first copies of each of the segments of the multiple segments in a first data stream of the multiple data streams are staggered in time from second copies of each of the segments of the multiple segments in a second data stream of the multiple data streams so that each of the multiple segments of the content are transmitted to the client during a period of time.
 11. The method of claim 10, further comprising assigning each of the multiple data streams to the separate multicast session of the plurality of multicast sessions.
 12. The method of claim 10, further comprising detecting an error in a segment of the multiple segments, wherein the error is detected based on metadata associated with the segment.
 13. The method of claim 12, further comprising detecting the error in the segment by comparing a codeword and a first check value extracted from the metadata to a second check value associated with the client.
 14. The method of claim 10, further comprising determining an available bandwidth for the client.
 15. The method of claim 14, further comprising connecting the client to a subset of the plurality of multicast sessions based on the available bandwidth.
 16. The method of claim 10, further comprising providing, to the client, a new copy of a segment in which an error was detected.
 17. The method of claim 10, further comprising creating the multiple data streams
 18. The method of claim 10, further comprising transmitting, to the client, each of the multiple data streams during a single time slot.
 19. The method of claim 10, further comprising determining that the content is error-free based on a comparison of a first check value extracted from metadata associated with the content to a second check value associated with the client.
 20. A computer-readable device comprising instructions, which when loaded and executed by a processor, cause the processor to perform operations, the operations comprising: dividing content into multiple segments that correspond to multiple data streams, wherein each segment of the multiple segments is a separate portion of the content with respect to other segments of the multiple segments; transmitting, to a client, each of the multiple data streams via a separate multicast session of a plurality of multicast sessions, wherein first copies of each of the segments of the multiple segments in a first data stream of the multiple data streams are staggered in time from second copies of each of the segments of the multiple segments in a second data stream of the multiple data streams so that each of the multiple segments of the content are transmitted to the client during a period of time. 